package StudyIo;

import java.io.*;
import java.nio.Buffer;
import java.sql.Time;
/**
 *学习常用流
 * */
public class StudyIo_BufferedReader {
    public static void main(String[] args) throws Exception{
        //Buffer流
        //使用BufferedReader对FileReader进行包装，使得可以每次读一行
//        FileReader fr=new FileReader("e:abc.txt");//每次只能读一个字符
//        BufferedReader bf=new BufferedReader(fr);//把fr包装，就可以读一行了
////        String str =bf.readLine();
//        String str =null;
//        while((str=bf.readLine())!=null){
//            System.out.println(str);
//        }
//        fr.close();



//        //转换流//当输入流不是FileReader的时候，可以使用InputStreamReader流进行转换，进而可以被BufferedReader包装
//        FileInputStream fi=new FileInputStream("e:abc.txt");
//        InputStreamReader ir=new InputStreamReader(fi);//作为中介，把fi转换
//        BufferedReader bf=new BufferedReader(ir);//把ir包装
//        String str=null;
//        while((str=bf.readLine())!=null){
//            System.out.println(str);
//        }

//        //数据流
//        FileOutputStream fo=new FileOutputStream("e:abc.txt");
//        DataOutputStream dof=new DataOutputStream(fo);//使用DataOutputStream包装FileOutputStream，可以传八种数据类型
////        dof.writeInt(1);//传了个Int,是十六进制
////        fo.close();
//        fo.write(65);
//        fo.write(65+256);//输出一个字节
//        fo.flush();
//        dof.writeInt(65);
//        dof.writeInt(65+256);//完整地输出四个字节，共八位
//        dof.flush();
//        fo.close();


//        //打印流
//        FileOutputStream fo=new FileOutputStream("e:abc.txt");
//        PrintWriter pw=new PrintWriter(fo);
//        pw.println("helloworld");
//        pw.flush();
//        fo.close();


        //对象流（要继承一个接口）
        Time1 t1=new Time1();
        t1.setTime(16,39,0);
        Time1 t2;
        FileOutputStream fo =new FileOutputStream("e:abc.txt");
        ObjectOutputStream oo=new ObjectOutputStream(fo);
        oo.writeObject(t1);
        fo.close();
        FileInputStream fi =new FileInputStream("e:abc.txt");
        ObjectInputStream oi=new ObjectInputStream(fi);
        t2=(Time1) oi.readObject();
        t2.showTime();
        fi.close();

//        //标准输入流，从控制台输入
//        BufferedReader br =new BufferedReader(new InputStreamReader(System.in));
//        String str=br.readLine();
//        System.out.println(str);


    }
}

class Time1 implements Serializable{//对象流要继承一个接口才行
    private int hour,minute,second;
    public void setTime(int h,int m,int s){
        hour=h;
        minute=m;
        second=s;
    }
    public void showTime(){
        System.out.println(hour+":"+minute+":"+second);
    }
}